<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>老师信息</title>
    <style>
        body{
            width:960px;
            margin:auto;
        }
        .teacher{
            clear:both;
        }
        .photo{
            margin-top:20px;
            width:140px;
            height:140px;
            border-radius:70px;
            overflow:hidden;
            float:left;
        }
        .content{
            margin-left:60px;
            width:580px;
            float:left;
        }
    </style>
</head>
<body>
    <h2>{{subject.name}}学科老师信息</h2>

    <hr>
    {% for teacher in teachers %}
    <div class="teacher">
        <div class="photo">
            <img src="{{ teacher.photo.url }}" width="140">
        </div>
        <div class="content">
            <p>
                {{teacher.name}}&nbsp;&nbsp;
                {{teacher.sex | yesno:"男, 女"}}&nbsp;&nbsp;
                {{teacher.birth}}
            </p>
            <p>
                {{teacher.intro}}
            </p>
            <p class="comment">
                <a href="/praise/?tno={{teacher.no}}">好评</a>(<span>{{teacher.good_count}}</span>)&nbsp;&nbsp;
                <a href="/criticize/?tno={{teacher.no}}">差评</a>(<span>{{teacher.bad_count}}</span>)
            </p>
        </div>
    </div>
    {% endfor %}
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script>
    // $()函数中的箭头函数是页面加载完成之后要执行的回调函数
    $(() => {
        let flag = true
        // 通过$(选择器)获取页面元素绑定点击事件
        // on方法的第一个参数是事件名 第二个参数是事件回调函数
        // 事件回调函数的参数evt是代表事件的对象
        $('.comment>a').on('click', (evt) => {
            // 阻止事件默认行为（避免直接刷新页面）
            evt.preventDefault()
            if (flag) {
                // 实现函数节流
                flag = false
                setTimeout(() => { flag = true }, 2000)
                // 通过事件对象获取事件源并由$函数转成jQuery对象
                let anchor = $(evt.target)
                // 通过jQuery对象的getJSON方法发起Ajax请求
                // 第一个参数是请求的URL
                // 第二个参数是请求完成之后要执行的回调函数
                $.getJSON(anchor.attr('href'), (json) => {
                    if (json.code == 10000) { // 投票成功
                        // 获取与a标签相邻的span标签
                        let span = anchor.next()
                        // 将span标签的值加1再写回span标签
                        span.text(parseInt(span.text()) + 1)
                    } else {
                        alert(json.message)
                        if (json.code == 10002) {
                            location.href = '/login/?backurl='+ btoa('/teachers/?sno={{subject.no}}')
                        }
                    }
                })
            } else {
                alert('操作太频繁')
            }
        })
    })
    </script>
</body>
</html>
